万卷网> GESP认证 >C++ > 2026年3月CCF—GESP(C++二级)编程能力等级认证试卷

2026年3月CCF—GESP(C++二级)编程能力等级认证试卷
二级 2026 2026-09-28 10:55:26 80次

一、单选题

1.

下面代码用来找出输入的N个正整数中最大的一个。如果将代码段用流程图来表示,则 L1 标记的代码行应 该使用的图形是( )。

int N, max=0, val; 
cin >> N; 

while(N){ 
    cin >> val; 
    if(val > max) // L1 
        max = val; 
    N--; 
} 
cout << max;
A.

圆形框

B.

椭圆形框

C.

平行四边形框

D.

菱形框

2.

下面的 C++ 代码段正常执行后其输出的数字图形是( )。

for (i = 1; i < 5; i++){ 
    for (j = 1; j < i+1; j++) 
        cout << j; 
    cout << endl; 
}
A.

1

12

123

1234

B.

1

22

333

4444

C.

1

21

321

4321

D.

4

34

234

1234

3.

下面 C++ 代码段执行后,其输出是( )。

int i, j, cnt; 
cnt = 0; 
for (i = 0; i < 5; i++){ 
    i = -i; for (j = i; j < -i; j++) cnt += 1; 
    i = -i; 
} 
cout << cnt;
A.

5

B.

15

C.

20

D.

30

4.

下面的 C++ 代码段执行后其输出是( )。

tnt = 0; 
for (int i = 0; i < 5; i++){ 
    for (int j = 0; j < i; j++) 
        tnt += 1; 
    cout << tnt << "#"; 
} 
cout << tnt;
A.

0#1#3#6#10#10

B.

1#2#3#4#5#6#7#8#9#10#10

C.

10#10

D.

10

5.

下面的 C++ 代码执行后其输出是(  )。

int cnt = 0, i, j; 
for (i =1; i < 5; i++){ 
    for (j =0; j < i; j++) 
      cout << j << "#"; 
      break; 
} 
if(i >= 5) 
    cout << (i*j);
A.

0#0#1#0#1#2#0#1#2#3#12

B.

0#0#1#0#1#2#0#1#2#3#

C.

0#

D.

1#

6.

下面4个选项中,与下面 C++ 代码段具有相同效果的是(   )。

i = 0; 
while (i < 5){ 
    cout << i; 
    i += 1; 
}
A.

for (i = 0; i < 5; i++)
cout << i;
B.
for (i = 1; i < 5; i++)
	cout << i;
C.
for (i = 0; i < 6; i++)
	cout << i;
D.
for (i = 1; i < 6; i++)
	cout << i;
7.

下面的 C++ 代码段执行后其输出是( )。

for ( int i = -2; i < 2; i++)
    if (not i % 3)
        cout << i << "#";
A.

0#

B.

-2#-1#1#

C.

-1#0#

D.

-2#0#1#

8.

下面 C++ 代码执行后其输出是( )。

int count = 0; 
for (int i = 1; i < 4; i++) 
    for (int j = 1; j < 5; j++){ 
        if (j == 3) 
            continue; 
        if (i == 2) 
            break; 
        count += 1; 
} 
cout << (count);
A.

2

B.

4

C.

6

D.

8

9.

某同学执行C++代码 cout << ((0.1 + 0.2) == 0.3) 时输出 0 ,下面最可能的原因是(  )。

A.

C++的 + 运算符在处理小数时存在bug

B.

0.1 、 0.2 和 0.3 在计算机中无法用二进制浮点数精确表示,导致 0.1 + 0.2 的结果与 0.3 存在微小误差

C.

== 运算符不能用于比较浮点数,只能用于整数

D.

因为 0.1 + 0.2 的数学结果不等于 0.3

10.

下面选择项中,与C++表达式 !(x > 5 && y <= 10) 等价的是( )。

A.

x <= 5 && y > 10

B.

x > 5 || y <= 10

C.

x <= 5 || y > 10

D.

! x > 5 && ! y <= 10

11.

某学校举办“校园演讲比赛”,每位选手由8位评委打分(分数为 0~10 的整数),且每位评委必须打分。计 分规则:若至少有5位评委给出大于等于6分,则成绩有效,最终得分为所有8位评委的总分;如给出低于6分的评委 数量超过5位,则记为0分。以下核心程序段依次输入8个分数,并计算最终得分。横线处应填入( )。

total_score = 0; // 所有分数之和 
high_count = 0; // ≥6分的评委数量 

for (i = 0; i < 8; i++){ 
    cout << "请输入评委分数: "; 
    cin >> score; 
    ____________________; 
    if (score >= 6) 
    ________________; 
} 
    
if (high_count >= 5) 
    cout << total_score; 
else 
    cout << 0;


A.
total_score += score 
high_count += 1
B.
total_score += score 
high_count += score
C.
high_count += 1 
total_score += score
D.
total_score *= score 
high_count *= 1
12.

下面 C++ 代码执行后输出是( )。

int n = 10; 
while (n > 0){ 
    n -= 1; 
    if (n % 3 == 0) 
        continue; 
    if (n == 5) 
        break; 
} 
cout << n;
A.

0

B.

5

C.

6

D.

7

13.

2026年春节联欢晚会上一个武术表演节目《武 BOT》。节目中多个人形机器人会表演空翻,它们落地可能会有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器人保持原来队列。如果将机器人视作 一个计算机系统,那么在该计算机系统中下面哪一项不能作为输入设备( )。

A.

检测重心的重力传感器

B.

预装的AI算法程序

C.

接收动作指令的遥控器

D.

拍摄其他机器人的摄像头

14.

学校图书馆的借阅卡号由6位整数组成。前5位是顺序编号,第6位是校验码,用于防止输错。校验码规则 如下:将前5位数字相加,然后除以10的余数,就是第6位数字。如卡号 123455 的前5位之和为 15 ,除以 10 的余 数是5,故第6位为5。下面的C++代码段用于判断卡号是否正确,横线处应填入的代码是(    )。

cout << "请输入卡号:"; 
cin >> N; 
order_num = N / 10; // 获得前5位顺序号,假设录入一定为6位正整数 
check_num = N % 10; // 获得最后一位 

tnt = 0; // 保存前5位之和 
for (i = 0; i < 5; i++){ 
    ________________; 
    order_num /= 10; 
} 

if (__________________) 
    cout << "符合校验规则"; 
else 
    cout << "不符合校验规则";
A.
tnt += order_num / 10 
tnt / 10 == check_num
B.
tnt += order_num % 10 
tnt % 10 == check_num
C.
tnt = order_num / 10 + tnt 
tnt % 10 == check_num
D.
tnt = order_num % 10 
tnt / 10 == check_num
15.

下面 C++ 代码可以执行,有关说法正确的是( )。

double PI = 3.1415926; 
cout << (PI);
A.

为了方便初学者, cout << (PI) 和 cout << (pi) 效果相同,即变量的大小写不敏感

B.

cout << (PI) 修改为 cout << (Pi) 能正常执行

C.

不能用 PI 做变量名,因为要保存圆周率这个常量

D.

将程序中全部 PI 都改写为 Pai ,将能正常执行,不会报错

二、判断题

1.

下面C++代码段执行后将输出 0-3-6-9- 。 ( )

for (int i = 0; i < 10; i++){ 
    if (i % 3) 
        continue; 
    cout << i << "-"; 
}


A.正确 B.错误
2.

C++ 语句cout << ('4' % '2' == '2' * '2' % 2); 执行后的输出是1。( )

A.正确 B.错误
3.

下面 C++ 代码执行后输出如左图所示,将 " %d" 修改为 "%3d" 即可实现右图输出。( )

A.正确 B.错误
4.

下面的 C++ 代码段执行时将报错,因为10是整数类型, a 是布尔类型。由于类型不同,不能进行加法运 算。( )

bool a = true; 
cout << (10 + a);


A.正确 B.错误
5.

小明的妈妈最近刚刚给他买了一块电话手表,除了可以看时间,小明也可以用它和妈妈打电话、收发信息, 那么可以推测这块手表中装有一款特定操作系统。( )

A.正确 B.错误
6.

下列 C++ 代码执行后将输出 1#4#9#16#16 。( )

cnt = 0; 
for (i = 1; i < 5; i++){ 
    for (j = 1; j < i + 1; j++) 
        if (i * j % 10 == 0) 
            break; 
    if (j >= i + 1) 
        cout << (i * j) << "#"; 
} 
if(i >= 5) 
    cout << (i * j);


A.正确 B.错误
7.

下面的 C++ 代码段执行将不会有输出,因为内层循环 j 总是 0 开始, i * j % 10 == 0 将会被满足,执 行 break ,故而 i 小于 10 ,不会满足 if 判断条件。( )

for (i = 1; i < 10; i++) 
    for (j = 0; j < i; j++) 
        if (i * j % 10 == 0) 
            break; 
if(i >= 10) 
    cout << (i*j);


A.正确 B.错误
8.

下面的 C++ 代码段用于计算1到N之间且包含N的所有数字中含有的3的个数,如1到40含有14个3, 而1到20则 只含有2个3。如果将 while (i != 0) 改为 while (abs(i)) ,则执行结果相同。( )

A.正确 B.错误
9.

下面的 C++ 代码段可正常执行,删除 continue 不影响执行效果。( )

for (i = 0; i < 10; i++){ 
    i += 1; 
    continue; 
} 
cout << (i);


A.正确 B.错误
10.

执行下面的 C++ 代码段,如果N是基本数据类型,则语句 cout << (N); 将被执行 0 次或无数次(即死循 环)。( )

cin >> N;
while (N)
	cout << (N);
A.正确 B.错误

三、编程题

1.

数数

时间限制:1.0 s

内存限制:512.0 MB

题目描述

对于正整数n,如果n的所有数位中包含恰好3个2,Alice 会认为这个正整数是美丽的。例如,正整数24122中包含3个2,所以24122是美丽的;正整数132中包含1个2,所以132不是美丽的;正整数212322中包含4个2,

所以 不是美丽的。

Alice 想知道正整数L到正整数R(包括L和R)中有多少美丽的正整数,你能帮她数一数吗?

输入格式

输入共2行,第一行为正整数L,第二行为正整数R。

输出格式

输出一行,包含一个整数C,表示L到R中C美丽数的数量。

输入样例

2221
2223

输出样例

2

样例解释

2221到2223中,2221与2223是美丽的,2222不是美丽的。

数据范围

保证。

2.

画画

时间限制:1.0 s

内存限制:512.0 MB

题目描述

输入一个正整数n,你需要绘制一个n行n列的正方形,绘制规则如下:

正方形的四个顶点使用 + 绘制;

除顶点外,第1行与第n行使用 - 绘制;

除顶点外,第1列与第n列使用 | 绘制;

正方形内部使用 * 绘制。

输入格式

一行,一个正整数n。

输出格式

输出共n行,表示对应的正方形。

输入样例

5

输出样例

+---+
|***|
|***|
|***|
+---+

数据范围

保证。

公众号
客服 反馈
顶部